devServer

传递一个对象用来启动一个本地服务,同时需要安装插件——webpack-dev-server。

以下这一部分参数为常用配置:


devServer.contentBase:boolean | string | array

设置本地服务的基本路径。

  • 如果不设置该属性,那么基本路径就是当前项目路径,等价于""或者path.resolve(__dirname,"")

    devServer:{
        port:3000
    }
    //启动服务访问http://localhost:3000/webpack.config.js是能访问到该js文件的
    
  • 如果设为false,那么将不能访问该项目下的任何静态资源文件。

  • 设置一个字符串,则代表以该目录作为服务器基本路径(即使该目录并不存在也可以),同时也就可以访问该目录下的资源文件。

  • 设置一个数组,数组的每个元素则为一个路径,那么这些路径下的资源文件可被直接访问。

    devServer:{
        contentBase:[path.resolve(__dirname,"src"),path.resolve(__dirname,"src/style/")],
        port:3000
    }
    //src下有个index.js文件,src/style下有个index.css文件同时又有个index.js文件,
    

    直接访问http://localhost:3000/index.jshttp://localhost:3000/index.css是可以直接访问到的,相当于取了并集。虽然index.js重复了,但返回的内容是以src下的index.js为准的,相当于路径越靠前,优先级越高。

devServer.port:number

设置本地服务器端口号,默认为8080

devServer.host:string

设置请求主机名。

  • 如果不设该参数,则默认以localhost 或 127.0.0.1访问(默认端口8080),这种情况下是无法通过本机IP来访问的,如果涉及到通过IP请求局域网的数据也是不行的。
  • 设置为本机IP地址,则以本机IP作为主机名启动服务,这时可以解决同局域网不能请求其它主机数据的问题。

devServer.useLocalIp:boolean

是否启用本地IP,默认false。

单纯将该属性设为true等价于缺省host属性,没什么意义,所以要搭配host和disableHostCheck。

devServer:{
    host:'0.0.0.0', //设置缺省路由
    useLocalIp:true,//启用本地IP
    disableHostCheck:true,//禁用主机检测
}

这样配置,无论是IP地址还是localhost都可以直接访问了,同时又避免了本地写固定IP地址的问题。

devServer.disabledHostCheck:boolean

是否禁用主机检查,默认false,主要是为了安全性的一些问题,配合方式,参见上述。

devServer.allowedHosts:array

白名单设置,每个元素为IP或者域名,.表示通配符,如:

devServer:{
    allowedHosts:[.baidu.com],//表示二级域名下都可以访问
}

关于这个属性,一直无法验证。如果想要本地既可以localhost访问也可以IP访问,那么同局域网的其它主机都是可以访问的,那么这个allowedHosts属性的作用是什么呢?

devServer.compress:boolean

是否启用gzip压缩,默认false,强烈建议设为true,可大大节省请求流量,加快响应速度。实际发布到正式环境,应该要求后端同学也添加该配置。

以下这部分参数为辅助配置,不常用:


devServer.clientLogLevel:string

日志类型,出现在命令行中。

默认是info,可选none、error、warning、info

devServer.color:boolean

是否启用命令行颜色标识,默认是true。该属性设置只能以CLI的方式。

webpack-dev-server --color

devServer.lazy:boolean

惰性模式,默认false,当设为true时,将不在监听文件的变化。

devServer.filename:string

与lazy结合使用,指定一个文件,当文件请求时才会编译(需lazy为true)。

lazy和filename暂时没搞明白。

devServer.header:object

配置一个响应头对象。

devServer.historyApiFallback:boolean | object

当启用了HTML5 history API的时候需要配置该属性。

devServer.hot:boolean

是否启用模块热替换,默认false。

devServer.hotOnly:boolean

与hot属性相配。

devServer.https:boolean | object

以https协议启动本地服务。

devServer.info:boolean

默认true,只能cli配置,用于输出cli信息。

devServer.inline:boolean

默认true,控制台模式输出信息。置为false,则以iframe模式输出信息。

devServer.noInfo:boolean

是否禁止输出打包信息,默认false

devServer.open:boolean

是否自动打开浏览器,默认false

devServer.openPage:string

打开指定页面

devServer:{
    open:true,
    openPage:'test/index'
}
//默认打开浏览器地址就是:http://localhost:8080/test/index

devServer.overlay:boolean | object

当编译错误时,是否浏览器全屏显示错误信息,默认false

devServer.proxy:object

配置接口代理

devServer.progress:boolean

是否输出进度到控制台,默认false,仅支持cli模式

devServer.publicPath:string

暂时没搞明白用法


总结一下,devServer属性众多,有不少是提供辅助功能的,一般也不常用。常用就是这8个属性:

devServer:{
    //默认应该以打包目录为基本路径,这是为了考虑到作为最终输出一些插件可能放到这里
    contentBase:path.resolve(__dirname,'dist'),
    useLocalIp:true,//使用本地IP
    host:'0.0.0.0', //配置缺省地址
    disableHostCheck:false,//禁用host检测
    port:8080,//默认端口号就是8080
    compress:true,//启用zip压缩,加快服务响应速度
    open:true,//自动打开浏览器
    openPage:'',//默认浏览器访问根路径。注意如果以这种方式配置open,那么必须指定openPage,否则该属性就是undefined
}

还有一些属性,如publicpublicPath等属性暂时没想到实际应用场景,有待补充。

results matching ""

    No results matching ""